package net.johnewart.gearman.server.net;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.channel.socket.SocketChannel;
import io.netty.handler.ssl.SslHandler;
import net.johnewart.gearman.server.net.ssl.GearmanSslContextFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.net.ssl.SSLEngine;
public class GearmanServerInitializer extends ChannelInitializer<SocketChannel> {
private final NetworkManager networkManager;
private final boolean enableSSL;
private final Logger LOG = LoggerFactory.getLogger(GearmanServerInitializer.class);
public GearmanServerInitializer(NetworkManager networkManager,
boolean enableSSL)
{
this.networkManager = networkManager;
this.enableSSL = enableSSL;
}
@Override
public void initChannel(SocketChannel ch) throws Exception {
ChannelPipeline pipeline = ch.pipeline();
if(enableSSL)
{
LOG.info("Enabling SSL");
SSLEngine engine =
GearmanSslContextFactory.getServerContext().createSSLEngine();
engine.setUseClientMode(false);
pipeline.addLast("ssl", new SslHandler(engine));
}
pipeline.addLast("decoder", new Decoder());
pipeline.addLast("encoder", new Encoder());
pipeline.addLast("handler", new PacketHandler(networkManager));
}
}